package com.blog.cmrpersonalblog.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 编辑器类型枚举
 * 
 * @author Cmr
 */
@Getter
@AllArgsConstructor
public enum EditorType {

    /**
     * Markdown编辑器
     */
    MARKDOWN(1, "Markdown编辑器", "markdown"),

    /**
     * 富文本编辑器
     */
    RICH_TEXT(2, "富文本编辑器", "richtext");

    /**
     * 类型值
     */
    private final Integer value;

    /**
     * 类型名称
     */
    private final String name;

    /**
     * 类型代码
     */
    private final String code;

    /**
     * 根据值获取编辑器类型
     *
     * @param value 类型值
     * @return 编辑器类型
     */
    public static EditorType fromValue(Integer value) {
        if (value == null) {
            return MARKDOWN; // 默认返回Markdown编辑器
        }
        
        for (EditorType type : EditorType.values()) {
            if (type.getValue().equals(value)) {
                return type;
            }
        }
        
        return MARKDOWN; // 默认返回Markdown编辑器
    }

    /**
     * 根据代码获取编辑器类型
     *
     * @param code 类型代码
     * @return 编辑器类型
     */
    public static EditorType fromCode(String code) {
        if (code == null || code.trim().isEmpty()) {
            return MARKDOWN;
        }
        
        for (EditorType type : EditorType.values()) {
            if (type.getCode().equalsIgnoreCase(code.trim())) {
                return type;
            }
        }
        
        return MARKDOWN;
    }

    /**
     * 检查是否为Markdown编辑器
     *
     * @param value 类型值
     * @return 是否为Markdown编辑器
     */
    public static boolean isMarkdown(Integer value) {
        return MARKDOWN.getValue().equals(value);
    }

    /**
     * 检查是否为富文本编辑器
     *
     * @param value 类型值
     * @return 是否为富文本编辑器
     */
    public static boolean isRichText(Integer value) {
        return RICH_TEXT.getValue().equals(value);
    }
}
